Field of the Invention
The present invention relates to a server system for executing parallel distributed processing, a method for controlling the same, and a program.
Description of the Related Art
In recent years, as forms in which a server computer performs various processes, techniques such as cloud computing systems and software as a service (SaaS) have begun to be used. In cloud computing, the execution of data processing is distributed in parallel using many computing resources. This enables the simultaneous processing of requests from many clients. Cloud computing is also characterized in that the serial processing of a job to be executed by a server is broken down into units of task processes, and the tasks of executing the respective task processes are linked together to process the job in parallel, whereby many jobs can be processed in a scalable manner. In the present specification, such a system is referred to as a “cloud system”.
The publication of Japanese Patent Application Laid-Open No. 2011-095835 discusses a form in which in a cloud system, to improve the scalability of computer resources and prevent a system down at the peak of requests from clients, a back-end process actively and asynchronously acquires and executes a job. In such a form, if an abnormality has occurred in the back-end process and processing is not completed, a retry function for executing the processing again is required. If a retry is performed, even a back-end process different from the back-end process in which the abnormality has occurred can process the job. The term “back-end process” refers to a program that is recognized and managed as a different process by an operating system (OS) but executes the same processing as that of the back-end process in which the abnormality has occurred. An abnormality occurs in a back-end process when a hardware failure has occurred in a computer, or when a bug has occurred in software implemented in the back-end process.
If tasks are achieved by implementing prescribed processes in a back-end process, a mechanism of executing post-processing may be introduced into the tasks so that a job is normally processed. Examples of the post-processing include the process of notifying by email that job processing has failed, the process of outputting an error log, and the process of changing a status. Each process is a process for notifying a user that a job has not been normally processed, thereby expecting that the job will be processed again and then normally processed.
In a cloud system, however, a retry mechanism asynchronously performs parallel processing, and therefore, the same task does not necessarily repeatedly execute the same job. Thus, tasks cannot determine how many times an acquired job has been processed, and therefore, the tasks cannot execute post-processing at appropriate timing.